Використовуйте IEnumerable .Where перевантаження, що забезпечує індекс.
var fruit = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Вкрадено з Як отримати альтернативні елементи, використовуючи Enumerable в C #
var фрукти = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Якщо я зрозумів, що ви правильно ставите питання, що ви хочете, це дуже просто:
Ви хочете помістити фрукти в масив фруктів, і те саме для алфавітів, і вони альтернативно відображаються в масиві statsname так:
для (int i = 0, j = 0; i list = new List () {"apple", "X", "banana", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Виберіть (x => x. Виберіть (v => v.l) .ToList ())
.ToList ();
Тоді у вас є список списків:
|
list фрукти = new List ();
list alphabet = new List ();
for (int i = 0; i everyOther (колекція IEnumerable )
{
за допомогою (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
прибутковість е.Ток;
e.MoveNext (); // пропустити один
}
}
}
Ви можете використовувати System.Linq.Skip, щоб пропустити перший елемент.
рядок [] words = "apple X banana Y Kiwi z" .Split ();
var fruit = everyOther (слова);
var alphabets = everyOther (words.Skip (1));
Просто використовуйте їх як нову колекцію або зателефонуйте до них .ToArray () або .ToList ():
foreach (рядок f у фруктах)
Console.WriteLine (f);
рядок [] anArray = fruit.ToArray (); // за допомогою System.Linq
Тепер у вас є те, що вам потрібно.
Ітератори - це методи, які дають віддачу, див. Ітератори (Керівництво з програмування на C #). Це дуже сильна особливість мови. Ти можеш:
пропустити елементи
прикрашати елементи
змінити порядок
об'єднувати послідовності (див. System.Linq.Concat)
...
|
Ось деякий робочий код, сподіваємось, це буде корисним для вас:
за допомогою системи;
за допомогою System.Collections.Generic;
використання System.IO;
за допомогою System.Linq;
використання System.Text;
використання System.Threading.Tasks;
простір імен ReadFile
{
клас Програма
{
статична порожнеча ReadFile (рядок filePath, List custumerNames, List phoneNumbers)
{
рядок рядок = рядок.Порожній;
var fileStream = новий StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (рядок));
isPhoneNumber = false;
}
ще
{
custumerNames.Add (рядок);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (рядок [] аргументи)
{
Console.WriteLine ("Розпочато читати файл ...");
List custumersNamesList = новий список ();
List custumersPhonesNumbers = новий список ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Припускаючи, що обидва списки мають однакову довжину.
for (int i = 0; i